package com.tripcube.system.service;

import com.tripcube.system.domain.SysUserPreferences;

import java.util.List;

/**
* @author alander
* @description 用户偏好设置表Service
* @createDate 2025-09-24 21:32:27
*/
public interface SysUserPreferencesService {

    /**
     * 根据用户ID获取用户偏好设置
     * @param userId 用户ID
     * @return 用户偏好设置对象
     */
    SysUserPreferences getByUserId(Long userId);

    /**
     * 为指定用户初始化默认偏好设置
     * @param userId 用户ID
     * @return 操作结果
     */
    void initDefault(Long userId);

    /**
     * 根据用户ID更新偏好设置
     * @param dto 用户偏好设置数据传输对象
     * @return 操作结果
     */
    void updateByUserId(SysUserPreferences dto);

    /**
     * 判断用户兴趣是否匹配指定城市标签
     * @param userId 用户ID
     * @param cityTag 城市标签
     * @return 是否匹配
     */
    boolean isInterestMatch(Long userId, String cityTag);

    /**
     * 查询用户偏好设置列表
     * 
     * @param preferences 用户偏好设置信息
     * @return 用户偏好设置集合信息
     */
    List<SysUserPreferences> selectUserPreferencesList(SysUserPreferences preferences);

    /**
     * 通过用户ID查询用户偏好设置
     * 
     * @param userId 用户ID
     * @return 用户偏好设置对象
     */
    SysUserPreferences selectUserPreferencesByUserId(Long userId);

    /**
     * 新增用户偏好设置
     * 
     * @param preferences 用户偏好设置信息
     * @return 结果
     */
    int insertUserPreferences(SysUserPreferences preferences);

    /**
     * 修改用户偏好设置
     * 
     * @param preferences 用户偏好设置信息
     * @return 结果
     */
    int updateUserPreferences(SysUserPreferences preferences);

    /**
     * 删除用户偏好设置信息
     * 
     * @param userId 用户ID
     * @return 结果
     */
    int deleteUserPreferencesByUserId(Long userId);
}
